'use strict'

class content {

  constructor () {
    //param默认就是/:id，若要改变路由，则可以设置此属性，比如设置为/:name
    // this.param = '/:id'
  }

  //以下方法，若不需要，要去掉，避免无意义的路由。

  //获取资源具体内容
  //也是get请求，对应的路由是GET /content/:id
  async get (c) {
    let sqltext = `SELECT * FROM content WHERE id=$1`
    let r = await c.service.psql.query(sqltext,[c.param.id])
    if (r.rowCount === 0) {
        return c.status(404).send('content not found')
    }
    c.send(r.rows[0])
  }

  //创建资源
  //也是get请求，对应的路由是POST /content/:id
  async post (c) {
    try {
      let data = JSON.parse(c.body);

      let sqltext = `INSERT INTO `
                  +`content(id,add_time,detail,title,update_time)`
                  +`VALUES ($1,$2,$3,$4,$5)`;
      //生成唯一ID
      let id = c.helper.makeId();
      let tm = Date.now();

      let r = await c.service.psql.query(sqltext,[id,tm,data.detail,data.title,tm]);
      if (r.rowCount == 0) {
          return c.status(500).send("failed");
      }
      c.send(id)
  } catch (err) {
      c.status(400).send('It is not json data')
  }
  }

  //更新资源
  //也是get请求，对应的路由是PUT /content/:id
  // async put (c) {

  // }

  //获取列表
  //也是get请求，对应的路由是GET /content
  async list (c) {
    let ret = await c.service.psql.query('select * from content');
    // 等效于c.res.body = ret.rows
    c.send(ret.rows)//查询到的结果在rows属性里
    //此处不能end，因为我们是长久保持的服务
  }

  //删除资源
  //也是get请求，对应的路由是DELETE /content/:id
  async delete (c) {
      let sqltext = `DELETE FROM content WHERE id=$1`;
      let r = await c.service.psql.query(sqltext,[c.param.id]);
      console.log(c.param.id);
      console.log(r.rowCount);
      c.send({
        count:r.rowCount
      })
  }

  __mid(){
    return [
      {
        name : 'token-verify',
        path : ['post','delete']
      }
    ]
  }

}

module.exports = content
